package com.yonyougov.devops.cruxcisupport.appenv;

import com.yonyougov.devops.cruxcisupport.util.CruxDevOpsIdGenerator;
import com.yonyougov.devops.fwc.core.entity.BasicEntity;
import com.yonyougov.devops.fwc.core.id.IdGenerator;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigInteger;

/***
 * t_app_env
 */
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AppEnvEntity extends BasicEntity implements Serializable {

    /***
     * 主键
     */
    private BigInteger id;

    /***
     * 是否开启健康检查
     */
    private Boolean healthCheck;

    /***
     * 镜像
     */
    private String image;

    /***
     * 版本
     */
    private String packageVersion;

    /***
     * 实例数
     */
    private Integer replicas;

    /***
     * 是否使用适配器
     */
    private Boolean useAdapter;

    /***
     * 应用id
     */
    private BigInteger appId;

    /***
     * 环境id
     */
    private BigInteger envId;

    /***
     * 容器总数
     */
    private Integer containerTotal;

    /***
     * 重启次数
     */
    private Integer restartNum;

    /***
     * 运行的容器数
     */
    private Integer runContainerNum;

    /***
     * 容器状态
     */
    private String state;


    /***
     * 获取主键
     *
     * @return 获取主键
     */
    public BigInteger getId() {
        return id;
    }

    /***
     * 设置主键
     *
     * @param id 主键
     */
    public void setId(BigInteger id) {
        this.id = id;
    }

    /***
     * 获取是否开启健康检查
     *
     * @return 获取是否开启健康检查
     */
    public Boolean getHealthCheck() {
        return healthCheck;
    }

    /***
     * 设置是否开启健康检查
     *
     * @param healthCheck 是否开启健康检查
     */
    public void setHealthCheck(Boolean healthCheck) {
        this.healthCheck = healthCheck;
    }

    /***
     * 获取镜像
     *
     * @return 获取镜像
     */
    public String getImage() {
        return image;
    }

    /***
     * 设置镜像
     *
     * @param image 镜像
     */
    public void setImage(String image) {
        this.image = image;
    }

    /***
     * 获取版本
     *
     * @return 获取版本
     */
    public String getPackageVersion() {
        return packageVersion;
    }

    /***
     * 设置版本
     *
     * @param packageVersion 版本
     */
    public void setPackageVersion(String packageVersion) {
        this.packageVersion = packageVersion;
    }

    /***
     * 获取实例数
     *
     * @return 获取实例数
     */
    public Integer getReplicas() {
        return replicas;
    }

    /***
     * 设置实例数
     *
     * @param replicas 实例数
     */
    public void setReplicas(Integer replicas) {
        this.replicas = replicas;
    }

    /***
     * 获取是否使用适配器
     *
     * @return 获取是否使用适配器
     */
    public Boolean getUseAdapter() {
        return useAdapter;
    }

    /***
     * 设置是否使用适配器
     *
     * @param useAdapter 是否使用适配器
     */
    public void setUseAdapter(Boolean useAdapter) {
        this.useAdapter = useAdapter;
    }

    /***
     * 获取应用id
     *
     * @return 获取应用id
     */
    public BigInteger getAppId() {
        return appId;
    }

    /***
     * 设置应用id
     *
     * @param appId 应用id
     */
    public void setAppId(BigInteger appId) {
        this.appId = appId;
    }

    /***
     * 获取环境id
     *
     * @return 获取环境id
     */
    public BigInteger getEnvId() {
        return envId;
    }

    /***
     * 设置环境id
     *
     * @param envId 环境id
     */
    public void setEnvId(BigInteger envId) {
        this.envId = envId;
    }

    /***
     * 获取容器总数
     *
     * @return 获取容器总数
     */
    public Integer getContainerTotal() {
        return containerTotal;
    }

    /***
     * 设置容器总数
     *
     * @param containerTotal 容器总数
     */
    public void setContainerTotal(Integer containerTotal) {
        this.containerTotal = containerTotal;
    }

    /***
     * 获取重启次数
     *
     * @return 获取重启次数
     */
    public Integer getRestartNum() {
        return restartNum;
    }

    /***
     * 设置重启次数
     *
     * @param restartNum 重启次数
     */
    public void setRestartNum(Integer restartNum) {
        this.restartNum = restartNum;
    }

    /***
     * 获取运行的容器数
     *
     * @return 获取运行的容器数
     */
    public Integer getRunContainerNum() {
        return runContainerNum;
    }

    /***
     * 设置运行的容器数
     *
     * @param runContainerNum 运行的容器数
     */
    public void setRunContainerNum(Integer runContainerNum) {
        this.runContainerNum = runContainerNum;
    }

    /***
     * 获取容器状态
     *
     * @return 获取容器状态
     */
    public String getState() {
        return state;
    }

    /***
     * 设置容器状态
     *
     * @param state 容器状态
     */
    public void setState(String state) {
        this.state = state;
    }


    @Override
    public String toString() {
        return "AppEnvEntity{" +
                "id=" + id +

                ",healthCheck=" + healthCheck +

                ",image=" + image +

                ",packageVersion=" + packageVersion +

                ",replicas=" + replicas +

                ",useAdapter=" + useAdapter +

                ",appId=" + appId +

                ",envId=" + envId +

                ",containerTotal=" + containerTotal +

                ",restartNum=" + restartNum +

                ",runContainerNum=" + runContainerNum +

                ",state=" + state +
                '}';
    }

    //<!--用户自定义代码开始-->
    public IdGenerator idGenerator() {
        return new CruxDevOpsIdGenerator();
    }
    //<!--用户自定义代码结束-->
}
